package org.alis.rpc.proxy;

import org.alis.rpc.handler.RpcFuture;

/**
 * RpcService desc:
 *
 * @author luochuan
 * @date 2020/9/30
 */
public interface RpcService<V,P,FN extends SerializableFunction> {
    /**
     * 多线程 服务端方法
     * @param functionName 方法名
     * @param args 参数
     * @return future
     * @throws Exception 大异常类
     */
    RpcFuture<V> call(String functionName, P... args) throws Exception;

    /**
     * lambda future
     * @param fn function
     * @param args 可变参数
     * @return future
     * @throws Exception 大异常类
     */
    RpcFuture<V> call(FN fn,P... args) throws Exception;
}
